package com.pine.dbant.core.store;

import com.pine.dbant.common.store.CacheStore;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

/**
 * @author xiaoyuan
 * @create 2022/3/18 16:34
 **/
public abstract class AbstractSessionStore  implements CacheStore {

    /**
     * 从集合里查询数据
     *
     * @param dataList 数据集合
     * @param prefix   前缀
     * @param start    起始位置 (-1代表查询所有)
     * @param size     获取条数
     * @return 符合条件的新数据集合
     */
    public  List<String> searchList(Collection<String> dataList, String prefix, int start,
                                          int size) {
        if (prefix == null) {
            prefix = "";
        }
        // 挑选出所有符合条件的
        List<String> list = new ArrayList<String>();
        Iterator<String> keys = dataList.iterator();
        while (keys.hasNext()) {
            String key = keys.next();
            if (key.startsWith(prefix) ) {
                list.add(key);
            }
        }
        // 取指定段数据
        return searchList(list, start, size);
    }

    /**
     * 从集合里查询数据
     *
     * @param list  数据集合
     * @param start 起始位置 (-1代表查询所有)
     * @param size  获取条数
     * @return 符合条件的新数据集合
     */
    public  List<String> searchList(List<String> list, int start, int size) {
        // 取指定段数据
        if (start < 0) {
            return list;
        }
        int end = start + size;
        List<String> list2 = new ArrayList<String>();
        for (int i = start; i < end; i++) {
            if (i >= list.size()) {
                return list2;
            }
            list2.add(list.get(i));
        }
        return list2;
    }
}
